home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / APLMALLO.C next >
C/C++ Source or Header  |  1992-03-23  |  1KB  |  57 lines

  1. /**************************************************************************
  2.  * APLMALLO.C - Internal service routines apl_malloc(), apl_free().
  3.  *
  4.  *  These are the default allocate/free routines, used by gemfast
  5.  *  utilities that need memory for something.  They just call through
  6.  *  to GEMDOS.  You can change the calls below to your library malloc()
  7.  *  and free() instead of Malloc/Mfree if you want.  Or, you can do it
  8.  *  on a per-application basis by coding apl_malloc() and apl_free() in
  9.  *  your application so that they'll get used and the library default
  10.  *  routines below will be ignored by the linker.
  11.  *************************************************************************/
  12.  
  13. #include <osbind.h>
  14. #include "gemfast.h"
  15.  
  16. typedef void *(VPFUNC)();
  17. typedef void  (VFUNC)();
  18.  
  19. static void *default_allocator(size)
  20.     long size;
  21. {
  22.     return (void *)Malloc(size);
  23. }
  24.  
  25. static void default_releaser(block)
  26.     void *block;
  27. {
  28.     Mfree(block);
  29. }
  30.  
  31. static VPFUNC *allocator = default_allocator;
  32. static VFUNC  *releaser  = default_releaser;
  33.  
  34. void *apl_malloc(size)
  35.     long size;
  36. {
  37.     return (*allocator)(size);
  38. }
  39.  
  40. void apl_free(block)
  41.     void *block;
  42. {
  43.     if (block)
  44.         (*releaser)(block);
  45. }
  46.  
  47. void apl_mmvectors(newalloc, newrelease)
  48.     VPFUNC *newalloc;
  49.     VFUNC  *newrelease;
  50. {
  51.     if (newalloc && newrelease) {
  52.         allocator = newalloc;
  53.         releaser  = newrelease;
  54.     }
  55. }
  56.  
  57.